package com.zjff.mobiletwo.tool;

import com.google.gson.Gson;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.UUID;

@Component
public class KoDoTool {


    @Value("${project.qiniuyunkey}")
    private String key;//七牛云key
    @Value("${project.qinniuyunsecret}")
    private String secret;//七牛云secret
    @Value("${project.kodibucketname}")
    private String bucket;//bucket姓名
    @Value("${project.kodourl}")
    private String bucketurl;//bucketurl

    /**
     *
     * @param fileName 服务器上的文件名
     * @return String：下载地址（URL）
     */
    public String downloadFile(String fileName){
        String result = "";
        try{
            String tempUrl = bucketurl+"/"+fileName;//获取路径
            Auth auth = Auth.create(key,secret);//获取Token
            long time =3600;//URL有效时间
            result=auth.privateDownloadUrl(tempUrl,time);//获取公网下载地址
            System.out.println(result);
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 上传图片并返回图片在KoDo中的地址。
     * @param filePath 本地临时文件地址
     * @return String: Url文件在服务器的地址。
     * C://FILE//IMG//1.jpg
     */
    public String UploadFile(String filePath){
        String fileName = UUID.randomUUID().toString()+"."+filePath.split("\\.")[1];
        System.out.println(fileName);
        //华北是zone1, [华东z0] [华南z2] [北美na0] [东南亚as0]
        try{
            Configuration configuration = new Configuration(Region.regionNa0());
            UploadManager uploadManager = new UploadManager(configuration);
            Auth auth = Auth.create(key,secret);//根据Key和Secret获取Token
            String token = auth.uploadToken(bucket);
            Response response = uploadManager.put(filePath,fileName,token);//获取上传请求头
            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(),DefaultPutRet.class);//上传文件并返回结果

        }catch (Exception e){
            e.printStackTrace();
        }
        return "http://"+bucketurl+"/"+fileName;
    }
}
